package com.gambi.tapestry.client;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.json.client.JSONObject;

public class TapestryGWTComponentInitializer extends JavaScriptObject {

	protected TapestryGWTComponentInitializer() {}
	
	
	public final native String getComponentId()/*-{
		return this.componentId.toString();
	}-*/;
	
	public final native String getComponentType()/*-{
		return this.type.toString();
	}-*/;
	
	private final native JavaScriptObject getJNSIComponentParameters()/*-{
		return eval( this.componentParameters );
		//return this.componentParameters.toString();
	}-*/;
	
	public final JSONObject getComponentParameters(){
		return new JSONObject( getJNSIComponentParameters() );
	}
	
//	private final native String getPropertyAsString(String propertyName)/*-{
//		if( !this[ propertyName ] ){
//			return null;
//		}
//		return this[ propertyName ].toString();
//	}-*/;

//	private final native String getJSPropertyNames()/*-{
//		var keys = [];
//		for(var key in this){
//			keys.push(key.toString());
//		}
//		return keys.toString();
//	}-*/;

//	private final String[] getPropertyNames() {
//		return getJSPropertyNames().split(",");
//	}

//	private final String[] getPropertyAsArray(String propertyName) {
//		String arrayAsString = getPropertyAsString(propertyName);
//		if (arrayAsString == null) {
//			return new String[0];
//		}
//
//		if (arrayAsString.trim().equals("")) {
//			return new String[0];
//		}
//		
//		if( ! arrayAsString.contains(",") ){
//			return new String[]{ arrayAsString };
//		}
//		
//		return arrayAsString.split(",");
//	}
}
